////
////  MKReaderTextParser.swift
////  Fanmugua
////
////  Created by MK on 2021/3/30.
////  Copyright © 2021 taolang. All rights reserved.
////
//
//import UIKit
//
//class MKReaderTextParser: NSObject {
//    
//    /** 异步解析本地链接
//     * - Parameters:
//     *  - url: 本地文件地址
//     *  - completion: 解析完成
//     */
//    @objc class func parser(url:URL!, completion:MKReaderParserCompletion!) {
//        DispatchQueue.global().async {
//            let readerInfo = parser(url: url)
//            DispatchQueue.main.async {
//                completion?(readerInfo)
//            }
//        }
//    }
//    
//    /** 解析本地链接
//     * - Parameter url: 本地文件地址
//     * - Returns: 阅读对象
//     */
//    private class func parser(url:URL!) -> MKReaderModel? {
//        
//        // 链接不为空且是本地文件路径
//        if url == nil || url.absoluteString.isEmpty || !url.isFileURL {
//            return nil
//        }
//        
//        // 获取文件后缀名作为 bookName
//        let bookName = url.absoluteString.removingPercentEncoding?.lastPathComponent.deletingPathExtension ?? ""
//        let bookId = bookName   // bookName 作为 bookId
//        if bookId.isEmpty { // bookId 为空
//            return nil
//        }
//        
//        if !MKReaderModel.isExist(bookId: bookId) { // 不存在
//            let content = MKReaderParser.encode(url: url)   // 解析数据
//            if content.isEmpty {    // 解析失败
//                return nil
//            }
//            
//            // 解析内容并获得章节列表
//            let chapterSimpleInfos = parser(bookId: bookId, content: content)
//            
//            // 解析内容失败
//            if chapterSimpleInfos.isEmpty {
//                return nil
//            }
//            
//            // 阅读模型
//            let readerInfo = MKReaderModel.model(bookId: bookId)
//            readerInfo.bookSourceType = .local
//            readerInfo.bookName = bookName
//            readerInfo.chapterSimpleInfos = chapterSimpleInfos
//            // 设置第一个章节为阅读记录
//            readerInfo.recordInfo.modify(chapterId:readerInfo.chapterSimpleInfos.first!.chapterId, toPage: 0)
//            readerInfo.save()
//            return readerInfo
//        }else{  // 存在
//            return MKReaderModel.model(bookId: bookId)
//        }
//    }
//    
//    /** 解析整本小说
//     *- Parameters:
//     *  - bookId: 小说ID
//     *  - content: 小说内容
//     * - Returns: 章节列表
//     */
//    private class func parser(bookId:String!, content:String!) -> [MKReaderChapterSimpleModel] {
//        
//        // 章节列表
//        var chapterSimpleInfos:[MKReaderChapterSimpleModel] = []
//        
//        // 正则
//        let parten = "第[0-9一二三四五六七八九十百千]*[章回].*"
//        
//        // 排版
//        let content = MKReaderParser.contentTypesetting(content: content)
//        
//        // 正则匹配结果
//        var results:[NSTextCheckingResult] = []
//        
//        // 开始匹配
//        do{
//            let regularExpression:NSRegularExpression = try NSRegularExpression(pattern: parten, options: .caseInsensitive)
//            results = regularExpression.matches(in: content,
//                                                options: .reportCompletion,
//                                                range: NSRange(location: 0, length: content.length))
//        }catch{
//            return chapterSimpleInfos
//        }
//        
//        // 解析匹配结果
//        if !results.isEmpty {
//            
//            // 章节数量
//            let count = results.count
//            // 记录最后一个Range
//            var lastRange:NSRange!
//            // 记录最后一个章节对象C
//            var lastChapterInfo:MKReaderChapterModel?
//            // 有前言
//            var isHavePreface:Bool = true
//            
//            for i in 0...count {
//                // 章节数量分析:
//                // count + 1  = 匹配到的章节数量 + 最后一个章节
//                // 1 + count + 1  = 第一章前面的前言内容 + 匹配到的章节数量 + 最后一个章节
//                MKLog("章节总数: \(count + 1)  当前正在解析: \(i + 1)")
//                var range = NSMakeRange(0, 0)
//                var location = 0
//                
//                if i < count {
//                    range = results[i].range
//                    location = range.location
//                }
//                
//                // 章节内容
//                let chapterInfo = MKReaderChapterModel()
//                chapterInfo.bookId = bookId
//                chapterInfo.chapterId = NSNumber(value: (i + NSNumber(value: isHavePreface).intValue))
//                chapterInfo.priority = NSNumber(value: (i - NSNumber(value: !isHavePreface).intValue))
//                
//                if i == 0 { // 前言
//                    chapterInfo.chapterName = "开始"
//                    chapterInfo.content = content.substring(NSMakeRange(0, location))
//                    lastRange = range
//                    
//                    // 没有内容则不需要添加列表
//                    if chapterInfo.content.isEmpty {
//                        isHavePreface = false
//                        continue
//                    }
//                }else if i == count { // 结尾
//                    chapterInfo.chapterName = content.substring(lastRange)
//                    // 内容(不包含章节名)
//                    chapterInfo.content = content.substring(NSMakeRange(lastRange.location + lastRange.length, content.length - lastRange.location - lastRange.length))
//                }else { // 中间章节
//                    chapterInfo.chapterName = content.substring(lastRange)
//                    // 内容(不包含章节名)
//                    chapterInfo.content = content.substring(NSMakeRange(lastRange.location + lastRange.length, location - lastRange.location - lastRange.length))
//                }
//                
//                // 章节开头双空格 + 章节纯内容
//                chapterInfo.content = MKREADER_PH_SPACE + chapterInfo.content.removeSEHeadAndTail
//                
//                // 设置上一个章节ID
//                chapterInfo.previousChapterId = lastChapterInfo?.chapterId ?? MKREADER_NO_MORE_CHAPTER
//                
//                // 设置下一个章节ID
//                if i == (count - 1) { // 最后一个章节了
//                    chapterInfo.nextChapterId = MKREADER_NO_MORE_CHAPTER
//                }else{
//                    lastChapterInfo?.nextChapterId = chapterInfo.chapterId
//                }
//                
//                // 保存
//                chapterInfo.save()
//                lastChapterInfo?.save()
//                
//                // 记录
//                lastRange = range
//                lastChapterInfo = chapterInfo
//                
//                // 通过章节内容生成章节列表
//                chapterSimpleInfos.append(getChapterSimpleModel(chapterInfo: chapterInfo))
//            }
//        }else{
//            // 章节内容
//            let chapterInfo = MKReaderChapterModel()
//            chapterInfo.bookId = bookId
//            chapterInfo.chapterId = NSNumber(value: 1)
//            chapterInfo.chapterName = "开始"
//            chapterInfo.priority = NSNumber(value: 0)
//            chapterInfo.content = MKREADER_PH_SPACE + content.removeSEHeadAndTail
//            chapterInfo.save()
//            
//            // 添加章节列表模型
//            chapterSimpleInfos.append(getChapterSimpleModel(chapterInfo: chapterInfo))
//        }
//        return chapterSimpleInfos
//    }
//    
//    /** 获取章节列表对象
//     * - Parameter chapterInfo: 章节内容对象
//     * - Returns: 章节列表对象
//     */
//    private class func getChapterSimpleModel(chapterInfo:MKReaderChapterModel) -> MKReaderChapterSimpleModel {
//        let info = MKReaderChapterSimpleModel()
//        info.bookId = chapterInfo.bookId
//        info.chapterId = chapterInfo.chapterId
//        info.chapterName = chapterInfo.chapterName
//        return info
//    }
//}
